Cryptographic systems are known for providing secure transmission of files such as media files. Examples of media files include, for example, audio files, image files, and video files. Public key cryptography or asymmetric cryptography refers to cryptographic systems that use pairs of keys: public keys which may be disseminated widely, and private keys which are known only to the owner.
Cryptographic systems are also used in financial transactions. One such system is known as “bit coin,” described in Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System, www.bitcoin.org (2009), incorporated herein by reference in its entirety. In the bitcoin system, an important element is the block-chain, which is a type of distributed ledger. The block-chain records financial transactions which have been executed using bitcoins. No central authority intermediates the recording of financial transactions in the bitcoin system. Rather, bitcoin software is installed on a large number of devices (which may or may not be computer servers) connected via the Internet. The financial transactions (which can be considered in the form: “payer A wants to send Z bitcoins to payee B” are broadcast to devices on the network. The devices validate these financial transactions, add a record of them to their copy of the block chain, and then broadcast these block-chain additions to other servers of the network. Each block in a block chain contains hold batches of transactions. Each block includes the hash of the prior block in the block-chain, linking the two. In addition to a secure hash based history, a block-chain database has a specified algorithm for scoring different versions of the history so that one with a higher value can be selected over others. Furthermore, block-chains use various time-stamping schemes, such as proof-of-stake or proof of work to serialize additions or changes in the block-chain.
As noted above, a block-chain is a type of distributed ledger. However, as noted in Investopedia, distributed ledger can more generally be described as a ledger of any transactions or contracts maintained in decentralized form across different locations and people, eliminating the need of a central authority to keep a check against manipulation.” (http://www.investopedia.com/terms/d/distributed-ledgers.asp) Further, “the information on it is securely and accurately stored using cryptography and can be accessed using keys and cryptographic signatures. Once the information is stored, it becomes an immutable database and is governed by the rules of the network.” A blockchain is a form of a decentralized or disbributed ledger, but blocks of data need not be “chained” together to constitute a distributed ledger.
Maintaining the block chain or distributed ledger is referred to as “mining”, and the “miners” (or more particularly, the mining nodes in the system) are awarded newly created bitcoins and transaction fees in return for mining the block-chain. Mining includes confirming the validity of transactions received over the network, and adding them to the block they are creating, and then broadcasting the completed block to other nodes. Techniques for maintaining and mining a block-chain are described for example, in WO 2015/077378A1, and US 2015/0356555 A1, which are hereby incorporated by reference in their entirety.
In the Bitcoin system, bitcoins can be kept in what is often referred to as a digital wallet, which is a computer program which “holds” or “stores” bitcoins. However, in the Bitcoin system, bitcoins are inseparable from the block chain or distributed ledger. Accordingly, a bitcoin wallet is a program which stores digital credentials for a given user's bitcoin holdings and allows that user to access and spend them. The Bitcoin system utilizes asymmetric cryptography, in which two cryptographic keys, one public key and one private key, are generated. A bitcoin wallet includes a collection of these keys, and typically also includes functionality to make bitcoin transactions.
Bitcoin wallet software, sometimes referred as being “bitcoin client software”, allows a given user to transact bitcoins. A wallet program generates and stores private keys, and communicates with peers on the bitcoin network. An early wallet program called “Bitcoin-Qt” was released in the year 2009 by Satoshi Nakamoto as open source code; Bitcoin-Qt is also sometimes referred to as “Satoshi client”. The wallet program can be used as a desktop wallet for payments or as a server utility for merchants and other payment services.